﻿namespace Microsoft.WowAddonStudio.Lua.Parser
{
    public class ParserSink : IParserSink
    {
        public int Line { get; set; }
        public int Column { get; set; }
        public bool BraceMatching { get; set; }
        public bool FindNames { get; set; }
        public bool HiddenRegions { get; set; }
        public bool MethodParameters { get; set; }
        public bool ProcessHiddenRegions { get; set; }
        public bool FoundMatchingBrace { get; set; }

        /// <summary>
        /// Warnings the specified location.
        /// </summary>
        /// <param name="location">The location.</param>
        /// <param name="message">The message.</param>
        public virtual void AddWarning(LexLocation location, string message)
        {
        }

        /// <summary>
        /// Errors the specified location.
        /// </summary>
        /// <param name="location">The location.</param>
        /// <param name="message">The message.</param>
        public virtual void AddError(LexLocation location, string message)
        {
        }

        /// <summary>
        /// Matches the specified left.
        /// </summary>
        /// <param name="left">The left.</param>
        /// <param name="right">The right.</param>
        public virtual void MatchPair(LexLocation left, LexLocation right)
        {
        }

        /// <summary>
        /// Regions the specified location.
        /// </summary>
        /// <param name="location">The location.</param>
        public virtual void AddHiddenRegion(LexLocation location)
        {
        }

        /// <summary>
        /// Starts the name.
        /// </summary>
        /// <param name="location">The location.</param>
        /// <param name="name">The name.</param>
        public virtual void StartName(LexLocation location, string name)
        {
        }

        /// <summary>
        /// Qualifies the name.
        /// </summary>
        /// <param name="selectorLocation">The selector location.</param>
        /// <param name="nameLocation">The name location.</param>
        /// <param name="name">The name.</param>
        public virtual void QualifyName(LexLocation selectorLocation, LexLocation nameLocation, string name)
        {
        }

        /// <summary>
        /// Starts the parameters.
        /// </summary>
        /// <param name="location">The location.</param>
        public virtual void StartParameters(LexLocation location)
        {
        }

        /// <summary>
        /// Parameters the specified location.
        /// </summary>
        /// <param name="location">The location.</param>
        public virtual void NextParameter(LexLocation location)
        {
        }

        /// <summary>
        /// Ends the parameters.
        /// </summary>
        /// <param name="location">The location.</param>
        public virtual void EndParameters(LexLocation location)
        {
        }
    }
}
